package com.yidu.action;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpSession;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.yidu.comment.Message;
import com.yidu.comment.Page;
import com.yidu.model.SnAudit;
import com.yidu.model.SnComPurDetail;
import com.yidu.model.SnComPurchase;
import com.yidu.model.SnComSaDetail;
import com.yidu.model.SnComSales;
import com.yidu.model.SnComType;
import com.yidu.model.SnCommodity;
import com.yidu.model.SnUser;
import com.yidu.service.SnComPurchaseService;

/**
 * 分公司采购action
 * @author wuqi
 * @date 2019年1月3日
 */
@Controller
@RequestMapping("/sncompurchase")
public class SnComPurchaseAction {

	/**
	 * 注入采购service
	 */
	@Resource
	SnComPurchaseService scps;
	
	/**
	 * 查询退货表所有
	 * @param page 当前页数
	 * @param limit 每页多少行
	 * @param sc 条件
	 * @return map json格式
	 */
	@RequestMapping("/findAllSnComSales")
	@ResponseBody
	public Map<String,Object> findAllSnComSales(String page,String limit,SnComSales sc){
		Map<String,Object> map1 = new HashMap<>();
		Page pages = new Page();
		//将数据封装   开始的行数和一页的数据
		pages.setCurPage(Integer.valueOf(page));
		pages.setRows(Integer.valueOf(limit));
		map1.put("page", pages);
		map1.put("sc", sc);
		//调用条件查询的方法
		List<SnComSaDetail> list = scps.findAllSnComSales(map1);
		
		//查询行数
		int count = scps.findAllComSaDetailCount(map1);
		
		Map<String,Object> map2 = new HashMap<>();
		map2.put("code", 0);
		map2.put("msg", 0);
		//将行数放到map中
		map2.put("count", count);
		//将list集合放到map中
		map2.put("data", list);
		return map2;
	}
	
	/**
	 * 通过退货的业务id查询退货详情表
	 * @param page 当前页数
	 * @param limit 每页多少行
	 * @param sc 条件
	 * @return map json格式
	 */
	@RequestMapping("/findAllComSaDetail")
	@ResponseBody
	public Map<String,Object> findAllComSaDetail(String page,String limit,SnComSales sc){
		Map<String,Object> map1 = new HashMap<>();
		Page pages = new Page();
		//将数据封装   开始的行数和一页的数据
		pages.setCurPage(Integer.valueOf(page));
		pages.setRows(Integer.valueOf(limit));
		map1.put("page", pages);
		map1.put("sc", sc);
		//调用条件查询的方法
		List<SnComSaDetail> list = scps.findAllComSaDetail(map1);
		
		Map<String,Object> map2 = new HashMap<>();
		map2.put("code", 0);
		map2.put("msg", 0);
		//将行数放到map中
		map2.put("count", 0);
		//将list集合放到map中
		map2.put("data", list);
		return map2;
	}
	
	/**
	 * 通过商品id和采购id查询采购详情表
	 * @param scpd 条件
	 * @return 查询出来的集合
	 */
	@RequestMapping("/findByIdBianJi")
	@ResponseBody
	public SnComPurDetail findByIdBianJi(SnComPurDetail scpd) {
		return scps.findByIdBianJi(scpd);
	}
	
	/**
	 * 入库
	 * @param purId 采购id
	 * @param braId 公司id
	 * @param session 得到session里的值
	 * @return 查询出来的集合
	 */
	@RequestMapping("/ruku")
	@ResponseBody
	public int ruku(String purId, String braId,HttpSession session) {
		SnUser user = (SnUser) session.getAttribute("user");
		return scps.ruku(purId,braId,user);
	}
	
	/**
	 * 点击退货提交
	 * @param purId 采购id
	 * @param tianJia 退货意见
	 * @param csComment 表的数据
	 * @param purSum 总价
	 * @param purCount 总数量
	 * @param braId 公司id
	 * @param session 获取session里的值
	 * @return 查询出来的集合
	 */
	@RequestMapping("/findBypdNumber")
	@ResponseBody
	public int findBypdNumber(String purId,String tianJia,String csComment,String purSum,String purCount,String braId,HttpSession session) {
		SnUser user = (SnUser) session.getAttribute("user");
		return scps.findBypdNumber(purId,tianJia,csComment,purSum,purCount,braId,user);
	}
	
	/**
	 * 采购表查询和分页
	 * @param page 当前页数
	 * @param limit 每页多少行
	 * @param sc 条件
	 * @param session 获取session里的值
	 * @return map json格式
	 */
	@RequestMapping("/findAll")
	@ResponseBody
	public Map<String, Object> findAll(String page,String limit,SnComPurchase scp,HttpSession session){
		SnUser user = (SnUser) session.getAttribute("user");
		//得到分页工具类
		Page pages=new Page();
		//将数据封装   开始的行数和一页的数据
		pages.setCurPage(Integer.valueOf(page));
		pages.setRows(Integer.valueOf(limit));
		//创建一个map对象
		Map<String, Object> maps=new HashMap<>();
		//获取分公司id
		scp.setBraId(user.getBraId());
		
		maps.put("page", pages);
		maps.put("scp", scp);
		//调用条件查询的方法
		List<SnComPurchase> list = scps.findAll(maps);
		//调用查询行数的方法
		int count=scps.findCount(maps);
		//创建一个map
		Map<String, Object> map = new HashMap<>();
		map.put("code", 0);
		map.put("msg", 0);
		map.put("count",count);
		//将list放入map中
		map.put("data", list);
		return map;
	}
	
	/**
	 * 商品表查询和分页
	 * @param page 当前页数
	 * @param limit 每页多少行
	 * @param sc 条件
	 * @return map json格式
	 */
	@RequestMapping("/findAllCommodity")
	@ResponseBody
	public Map<String,Object> findAllCommodity(String page,String limit,SnCommodity sc){
		Map<String,Object> map1 = new HashMap<>();
		Page pages = new Page();
		//将数据封装   开始的行数和一页的数据
		pages.setCurPage(Integer.valueOf(page));
		pages.setRows(Integer.valueOf(limit));
		map1.put("page", pages);
		map1.put("sc", sc);
		//调用条件查询的方法
		List<SnCommodity> list = scps.findAllCommodity(map1);
		//调用查询行数的方法
		int count=scps.findCommodityCount(map1);
		Map<String,Object> map2 = new HashMap<>();
		map2.put("code", 0);
		map2.put("msg", 0);
		//将行数放到map中
		map2.put("count", count);
		//将list集合放到map中
		map2.put("data", list);
		return map2;
	}
	
	/**
	 * 查询商品类型
	 * @return 商品类型集合
	 */
	@RequestMapping("/findAllSnComType")
	@ResponseBody
	public List<SnComType> findAllSnComType(){
		List<SnComType> list = scps.findAllSnComType();
		return list;
	}
	
	/**
	 * 增加采购和采购详情表
	 * @param tianJia 采购表的数据
	 * @param session 获取session的值
	 * @return
	 */
	@RequestMapping("/insert")
	@ResponseBody
	public Message insert(String tianJia,HttpSession session) {
		SnUser user = (SnUser) session.getAttribute("user");
		Message mess = new Message();
		int rows = scps.insert(tianJia,user);
		if(rows>0) {
			mess.setState(1);
		}else {
			mess.setState(0);
		}
		return mess;
	}
	/**
	 * 修改
	 * @param tianJia 采购表的数据
	 * @param purId 采购表id
	 * @param session 获取session里的值
	 * @return 1表示成功 ，0表示失败
	 */
	@RequestMapping("/update")
	@ResponseBody
	public Message update(String tianJia,String purId,HttpSession session) {
		SnUser user = (SnUser) session.getAttribute("user");
		Message mess = new Message();
		int rows = scps.update(tianJia,purId,user);
		if(rows>0) {
			mess.setState(1);
		}else {
			mess.setState(0);
		}
		return mess;
	}
	
	/**
	 * 增加审核表修改采购表状态
	 * @param purId 采购id
	 * @param auIdea 审核意见
	 * @param session 获取session里的值 
	 * @return 1表示成功 ，0表示失败
	 */
	@RequestMapping("/insertSnAudit")
	@ResponseBody
	public Message insertSnAudit(String purId,String auIdea,HttpSession session) {
		Message mess = new Message();
		SnUser user = (SnUser) session.getAttribute("user");
		int rows = scps.insertSnAudit(purId,auIdea,user);
		if(rows>0) {
			mess.setState(1);
		}else {
			mess.setState(0);
		}
		return mess;
	}
	/**
	 * 采购删除
	 * @param purId 采购id
	 * @return 1表示成功 ，0表示失败
	 */
	@RequestMapping("/delete")
	@ResponseBody
	public Message delete(String purId) {
		Message age = new Message();
		int rows = scps.delete(purId);
		if(rows>0) {
			age.setState(1);
		}else {
			age.setState(0);
		}
		return age;
	}
	
	/**
	 * 根据id查询商品表
	 * @param comId 商品id
	 * @return 商品集合
	 */
	@RequestMapping("/findById")
	@ResponseBody
	public SnCommodity findById(String comId) {
		return scps.findById(comId);
	}
	
	/**
	 * 根据采购id查询采购详情表的商品id
	 * @param purId 采购id
	 * @return 采购详情表集合
	 */
	@RequestMapping("/findDetailById")
	@ResponseBody
	public List<SnComPurchase> findDetailById(String purId){
		return scps.findDetailById(purId);
	}
	
	/**
	 * 根据id查询审核表
	 * @param page 当前页数
	 * @param limit 每页多少行
	 * @param sc 条件
	 * @return map json格式
	 */
	@RequestMapping("/snaudit")
	@ResponseBody
	public Map<String,Object> snaudit(String page,String limit,SnComPurchase sc){
		Map<String,Object> map1 = new HashMap<>();
		Page pages = new Page();
		//将数据封装   开始的行数和一页的数据
		pages.setCurPage(Integer.valueOf(page));
		pages.setRows(Integer.valueOf(limit));
		map1.put("page", pages);
		map1.put("sc", sc);
		//调用条件查询的方法
		List<SnAudit> list = scps.snaudit(map1); 
		Map<String,Object> map2 = new HashMap<>();
		map2.put("code", 0);
		map2.put("msg", 0);
		//将行数放到map中
		map2.put("count", 0);
		//将list集合放到map中
		map2.put("data", list);
		return map2;
	}
}

